Resumen

A partir de los datos sacados de la web ExploitDB y de Twitter vamos a realizar un anĂ¡lisis para responder las siguientes preguntas:

El proyecto estĂ¡ compuesto por el proyecto principal, el cual llama a diferentes funciones para realizar y mostrar la correlaciĂ³n de los datos en el cual se basa este estudio, y un package, Ă©ste proporciona las funciones comentadas anteriormente, asi como su implementaciĂ³n y la obtenciĂ³n de los datos.

A continuaciĂ³n se exponen los resultados obtenidos de ExploitDB y se hace una comparativa de los exploits y vulnerabiliadades de los Ăºltimos 7 dĂ­as con los obtenidos a partir del 2000. El objetivo es contrastar si los datos de los Ăºltimos 7 dĂ­as se pueden considerar una buena muestra.

DespuĂ©s de la comparativa, se correlarĂ¡n los exploits con los tweets de alrededor del mundo de la Ăºltima semana. Se ha escogido este perĂ­odo de tiempo debido a que la API de Twitter estĂ  limitada.

Por Ăºltimo, se sacan unas conclusiones para determinar si con los datos obtenidos y el estudio realizado ha sido suficiente para responder las preguntas planteadas.

ExploitDB

ObtenciĂ³n de datos

Nos nutrimos a base de un repositorio de Github. Éste pone a disposiciĂ³n de cualquier usuario un archivo csv con mĂ¡s de 37000 vulnerabilidades, que ademĂ¡s es actualizado a diario. Cada vulnerabilidad nos proporciona informaciĂ³n relevante como la id del exploit correspondiente en exploitDB, una descripciĂ³n, la fecha de agregaciĂ³n a exploitDB, el autor, la plataforma a la cual afecta, el tipo de vulnerabilidad y una descripciĂ³n mas especĂ­fica de este.

Obtenemos el fichero CSV mediante la funciĂ³n:

get_exploitdb_All <- function() {
  csv <- RCurl::getURL("https://raw.githubusercontent.com/offensive-security/exploit-database/master/files.csv")
  db <- read.csv(text = csv,stringsAsFactors = F)
  return(db)
}

AnĂ lisi comparativo

Plataformas

Si se analizan las dos grĂ¡ficas, se puede observar claramente que con mucha diferencia las plataformas de PHP y Windows son las que mas exploits tienen. No obstante, los datos obtenidos de la Ăºltima semana no es asĂ­. Aunque sigue predominando Windows, muy empatado con los otros sistemas operativos Linux i OS X, PHP no tiene tanto peso.

Por lo tanto, cuando se haga la correlaciĂ³n se debe tener en cuenta que las plataformas con las que se ha cruzado la informaciĂ³n con Twitter, no se pueden considerar como un resultado absoluto, no se deberĂ­a generalizar.

Actividad en twitter

A continuaciĂ³n podemos ver la actividad que ha havido en twitter en las Ăºltimas 24 horas de las plataformas mĂ¡s susceptibles a ataques

Tipos de exploits

En el caso de los exploits se ha visto que puede varĂ­ar mucho entre semanas debido a que muchas veces los tipos vienen en bloque. Es decir, dada una vulnerabilidad pueden salir exploits diferentes pero del mismo tipo. Por lo tanto, no se deberĂ­a generalizar.

DescripciĂ³n especĂ­fica del tipo de vulnearabilidad

Cada uno de los tipos de exploits especificados en el apartado anterior tiene una descripciĂ³n mĂ¡s especĂ­fica del la vulnerabilidad en cuestiĂ³n. En este caso, es muy probable que los resultados sean diferentes entre si y por eso en la grĂ¡fica salen porcentages tan iguales. Como dato curioso, SQL injection Ă©s el tipo de vulnerabilidad mas exploitada en los Ăºltimos 20 años.

Twitter

La api de twitter nos proporciona la informaciĂ³n necesaria para el estudio que queremos realizar. Para ello obtenemos un json al mandar una query contra la api. Al obtener el json parseamos su contenido y con ello obtenemos un dataframe con los datos que utilizaremos como el nombre de usuario, la ubicaciĂ³n del usuario, la coordenadas geogrĂ¡ficas, el texto publicado y la hora de la publicaciĂ³n.

#Obté dataframe amb exploits (tota la info)
exploitsDB <- SoCoTools::get_exploitdb(7)

#  Obté la data dels exploits
date <- paste(exploitsDB$date, sep=" ")

#n <- vapply(strsplit(tweet_search[2], "\\W+"), length, integer(1))

# ObtenciĂ³ del que s'ha de buscar
tweet_search <- paste(exploitsDB$platform, exploitsDB$type ,exploitsDB$subtype, sep=" ")

tweet_search <- gsub("[^[:alnum:][:blank:]+?&/\\-]", "", tweet_search)
tweet_search <- gsub("[0-9]+","",tweet_search)

tweet_search <- sub("/", " ",tweet_search) 
tweet_search <- sub("  ", "",tweet_search)

# En aquest punt tweet_search contĂ© tots els valors a buscar sense carĂ cters especials i nĂºmeros

# Si es vol busccar per hashtags executar les segĂ¼ents comandes
tweet_search <- gsub(" ", " #", tweet_search)
tweet_search <- paste("#", tweet_search, sep="")

AnĂ¡lisis de resultados